// 首先要知道的是，队列先进后出，也就意味着添加删除有序，可以设置一个最大值数组通过滑动保证
// 最大值排序，这样即使删除位刚好是最大值，也可以找到第二大最大值

var MaxQueue = function () {
  this.list = [];
  this.maxList = [];
}

MaxQueue.prototype.max_value = function () {
  if (this.list.length === 0) return -1;
  return this.maxList[0];
}

MaxQueue.prototype.push_back = function (value) {
  while (value > this.maxList[this.maxList.length - 1]) {
    this.maxList.pop();
  }
  this.list.push(value);
  this.maxList.push(value);
}

MaxQueue.prototype.pop_front = function () {  
  if (this.list.length === 0) return -1;
  let temp = this.list.shift();
  if (this.maxList[0] === temp) {
    this.maxList.shift();
  }
  return temp;
}